package com.ruoyi.common.core.domain.entity;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商品对象 product
 *
 * @author dam
 * @date 2023-07-21
 */
@Data
public class Product {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 逻辑删除 0：未删除 1：已删除
     */
    @Excel(name = "逻辑删除 0：未删除 1：已删除")
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;

    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    private Date updateTime;

    /**
     * 名称
     */
    @Excel(name = "名称")
    private String name;

    /**
     * 描述
     */
    @Excel(name = "描述")
    private String description;

    /**
     * 原价，单位是元
     */
    @Excel(name = "原价，单位是元")
    private BigDecimal originalPrice;

    /**
     * 价格，单位是元
     */
    @Excel(name = "价格，单位是元")
    private BigDecimal price;

    /**
     * 类别
     */
    @Excel(name = "类别")
    private Long productCategoryId;

    /**
     * 商品主人
     */
    @Excel(name = "商品主人")
    private Long userId;

    /**
     * 商品审核人
     */
    @Excel(name = "商品审核人")
    private Long reviewerId;

    /**
     * 成色 0：全新 1：几乎全新 2：轻微使用痕迹 3：明显使用痕迹 4：外观破损
     */
    @Excel(name = "成色 0：全新 1：几乎全新 2：轻微使用痕迹 3：明显使用痕迹 4：外观破损")
    private Integer fineness;

    /**
     * 商品数量
     */
    @Excel(name = "商品数量")
    private Integer number;

    /**
     * 计量单位
     */
    @Excel(name = "计量单位")
    private String unit;

    /**
     * 0：在售 1：售出 2：下架
     */
    @Excel(name = "0：在售 1：售出 2：下架 ")
    private Integer status;

    /**
     * 0：售卖 1：捐赠
     */
    @Excel(name = "0：售卖 1：捐赠 ")
    private Integer isContribute;

    /**
     * 0：功能完好无维修 1：维修过，可正常使用 2：有小问题，不影响使用 3：无法正常使用
     */
    @Excel(name = "0：功能完好无维修 1：维修过，可正常使用 2：有小问题，不影响使用 3：无法正常使用")
    private Integer functionalStatus;

    /**
     * 品牌id
     */
    @Excel(name = "品牌id")
    private Long brandId;

    /**
     * 收藏该商品的人数
     */
    private Integer starNum;

    /**
     * 阅读数量
     */
    private Integer readNum;

    private Long schoolId;

    private Long campusId;


    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("isDeleted", getIsDeleted())
                .append("name", getName())
                .append("descripption", getDescription())
                .append("originalPrice", getOriginalPrice())
                .append("price", getPrice())
                .append("productCategoryId", getProductCategoryId())
                .append("userId", getUserId())
                .append("reviewerId", getReviewerId())
                .append("fineness", getFineness())
                .append("unit", getUnit())
                .append("status", getStatus())
                .append("isContribute", getIsContribute())
                .append("functionalStatus", getFunctionalStatus())
                .append("brandId", getBrandId())
                .toString();
    }
}
